// 购物车模块
import { insertCart, findCartList, deleteCart } from '@/api/cart'

// 用户模块
const cart = {
  namespaced: true,
  // 定义数据
  state: () => ({
    cartList: []
  }),
  // 修改数据
  mutations: { // 操作响应式数据的方法(唯一可以修改)
    setCartlist (state, payload) {
      state.cartList = payload
    }
  },
  // 异步
  actions: {
    async insertCart (ctx, { skuId, count }) {
      // 发送请求 =>加入购物车接口
      await insertCart({ skuId, count })
      console.log({ skuId, count })
      // 获取到购物车的列表
      const res = await findCartList()
      // console.log(res)
      // 把值传给 setcartlist
      ctx.commit('setCartlist', res.data.result)
    },
    // 删除购物车
    async delCart (ctx, ids) {
      // 1. 调用删除接口
      // 2. 重新拉取购物车列表
      // 3. 再次把拉取到的列表存入vuex
      // ids 必须是一个数组
      await deleteCart(ids)
      const res = await findCartList()
      ctx.commit('setList', res.data.result)
    }
  },
  // 基于state的计算属性
  getters: {
    // 数组中每一项数据的count 之和累加出来
    allCount (state) {
      return state.cartList.reduce((a, c) => a + c.count, 0)
    },
    // 数组中每一项中count*price 累加起来
    allPrice (state) {
      return state.cartList.reduce((a, c) => a + c.price * c.count, 0)
    }
  }

}
export default cart
